package com.carefree.bookmall.service;


import com.carefree.bookmall.common.vo.PageVO;
import com.carefree.bookmall.entity.User;
import com.carefree.bookmall.exception.CustomException;

/**
 * @author Aurora
 */
public interface UserService {

    /**
     * 注册用户
     *
     * @param user 用户信息
     * @return
     */
    public boolean register(User user) throws Exception;

    /**
     * 用户登录
     *
     * @param userName 用户名
     * @return
     * @throws CustomException
     */
    public User login(String userName) throws CustomException;

    /**
     * 修改用户的手机号及地址
     *
     * @param userId  用户id
     * @param phone   用户手机号
     * @param address 用户地址
     * @return
     */
    public boolean updatePhoneAndAddress(Integer userId, String realName, String phone, String address) throws CustomException;

    /**
     * 修改密码
     *
     * @param userId          用户id
     * @param oldUserPassword 旧密码
     * @param newUserPassword 新密码
     * @return
     */
    public boolean updatePassword(Integer userId, String oldUserPassword, String newUserPassword) throws Exception;

    /**
     * 更新密码
     *
     * @param userId          用户id
     * @param newUserPassword 新密码
     * @return
     */
    public boolean updatePassword(Integer userId, String newUserPassword) throws Exception;

    /**
     * 分页查询用户信息
     *
     * @param pageNumber
     * @return
     */
    public PageVO queryUser(int pageNumber, int pageSize);

    /**
     * 删除用户
     *
     * @param userId 用户id
     * @return
     */
    public boolean deleteUser(Integer userId) throws CustomException;

    /**
     * 根据用户id查询用户信息
     *
     * @param userId 用户主键
     * @return 已查询的用户信息
     * @throws CustomException
     */
    public User queryUserByUserId(Integer userId) throws CustomException;

    /**
     * 修改部分用户信息
     *
     * @param user 客户端用户对象
     * @return true/false
     * @throws CustomException
     */
    public boolean updateUserSeletive(User user) throws CustomException;


    /**
     * 查询当天新增的用户
     *
     * @return
     */
    public int queryTodayUserCount();

    /**
     * 查询用户总数
     *
     * @return
     */
    public int queryUserCounts();

}
